


namespace Nadine
{
	//---------------------------------------------------------------------
	class NDDAEViewer : public NDCustomModule
	{
	private:
		NDAmelia*			m_pA;
		NDUID				m_nDAEID;
		NDUID				m_nGID;

		bool				m_bMeshInstance;
		bool				m_bUpdateGroupAABB;
		bool				m_bFinalized;

		bool				m_bCHCPPMode;
		bool				m_bRENDERBBOX;

		NDUID				m_nNumHierarchyNodes;
		NDUID				m_nNumTraversedNodes;
		NDUID				m_nNumQueryCulledNodes;
		NDUID				m_nNumFrustumCulledNodes;
		NDUID				m_nNumRenderedGeometry;

		NDCHCMgr*			m_pCHCMgrPtr;
		NDUID				m_nCHCID;

		NDLoadingScreen*	m_pLS;
		NDMenuDialog*		m_pMD;
		NDMFVCTest*			m_pMFVC;

		std::string			m_strPreLoadFile;

	protected:
		void loadFile();


	public:
		NDDAEViewer();

		virtual ~NDDAEViewer() {}

		//common func.
		virtual bool privateInit();
		virtual bool publicInit();

		virtual void release();

		//cb func.
		virtual void render(float fElapsedTime);
		virtual void renderUI(float fElapsedTime);

		virtual long mouseMessageProc(bool bLButtonDown, bool bRButtonDown, bool bMButtonDown, int nWheelDelta, int xPos, int yPos);
		virtual long windowMessageProc(bool bMaximumWin, bool bMinimumWin, bool bRestoreWin, bool bSizeChanged);

		static void CALLBACK buttonPressedEvent( int nButtonID );
		static void CALLBACK modeChangeEvent( int nMode );

		void internalButtonPressedEvent( int nButtonID );
		void internalModeChangeEvent( int nMode );

		void toggleState(); //toggle ar/normal mode
		void preloadFile( std::string& strFilePath );


	};
}